﻿package idv.cjcat.shintaz.compiler.scanner {
	
	public class TokenType {
		
		public static const ID			:int = 0;
		
		//key words
		public static const BREAK		:int = 1;
		public static const CASE		:int = 2;
		public static const CONTINUE	:int = 3;
		public static const DEFAULT		:int = 4;
		public static const DELETE		:int = 5;
		public static const DO			:int = 6;
		public static const ELSE		:int = 7;
		public static const FOR			:int = 8;
		public static const FUNCTION	:int = 9;
		public static const IF			:int = 10;
		public static const NEW			:int = 11;
		public static const RETURN		:int = 12;
		public static const SWITCH		:int = 13;
		public static const THIS		:int = 14;
		public static const VAR			:int = 15;
		public static const WHILE		:int = 16;
		
		//public static const TRUE		:int = 17;
		//public static const FALSE		:int = 18;
		
		public static const NULL		:int = 19;
		public static const UNDEFINED	:int = 20;
		
		
		//delimiters
		public static const BRACE_L		:int = 100;
		public static const BRACE_R		:int = 101;
		public static const BRACK_L		:int = 102;
		public static const BRACK_R		:int = 103;
		public static const PAREN_R		:int = 104;
		public static const PAREN_L		:int = 105;
		public static const COMMA		:int = 106;
		public static const DOT			:int = 107;
		public static const S_COLON		:int = 108;
		public static const QUESTION	:int = 109;
		public static const COLON		:int = 110;
		
		
		//types
		public static const BOOL		:int = 200;
		public static const NUMBER		:int = 201;
		public static const STRING		:int = 202;
		
		
		//operators
		public static const PLUS		:int = 300;	//+
		public static const MINUS		:int = 301;	//-
		public static const MUL			:int = 302;	//*
		public static const DIV			:int = 303;	///
		
		public static const LT			:int = 310;	//<
		public static const GT			:int = 311;	//>
		public static const EQ			:int = 312;	//==
		public static const LE			:int = 314;	//<=
		public static const GE			:int = 313;	//>=
		public static const NEQ			:int = 314;	//!=
		public static const INCRE		:int = 315;	//++
		public static const DECRE		:int = 316;	//--
		
		public static const AND			:int = 317;	//&&
		public static const OR			:int = 318;	//||
		public static const NOT			:int = 319;	//!
		
		public static const BIT_AND		:int = 320;	//&
		public static const BIT_OR		:int = 321;	//|
		public static const BIT_XOR		:int = 322;	//^
		public static const BIT_NOT		:int = 323;	//~
		
		public static const SHIFT_L		:int = 323;	//>>
		public static const SHIFT_R		:int = 324;	//<<
		public static const USHIFT_L	:int = 325;	//>>>
		public static const USHIFT_R	:int = 326;	//<<<
		
		
		//assignments
		public static const ASSIGN			:int = 400;
		public static const ASSIGN_PLUS		:int = 401;
		public static const ASSIGN_MINUS	:int = 402;
		public static const ASSIGN_MUL		:int = 403;
		public static const ASSIGN_DIV		:int = 404;
		public static const ASSIGN_BIT_AND	:int = 405;
		public static const ASSIGN_BIT_OR	:int = 406;
		public static const ASSIGN_BIT_XOR	:int = 407;
		public static const ASSIGN_BIT_NOT	:int = 408;
		public static const ASSIGN_SHIFT_L	:int = 409;
		public static const ASSIGN_SHIFT_R	:int = 410;
		public static const ASSIGN_USHIFT_L	:int = 411;
		public static const ASSIGN_USHIFT_R	:int = 412;
	}
}